package cn.kkcxy.blog.system.service;

import cn.kkcxy.blog.core.dto.client.LoginParamsDTO;
import cn.kkcxy.blog.core.result.ResponseEntity;
import cn.kkcxy.blog.core.vo.LoginVO;
import cn.kkcxy.blog.core.vo.admin.AdministratorInfoVO;
import cn.kkcxy.blog.core.vo.admin.RouterVO;

import java.util.List;

/**
 * @BelongsProject: kkcxy-blog
 * @BelongsPackage: cn.kkcxy.blog.system.service
 * @Author: kkcxy
 * @CreateTime: 2024-09-11 22:41
 * @Description: 认证服务
 * @Version: 1.0
 */
public interface AuthService {

    /**
     * @description: 用户登录
     * @author: kkcxy
     * @date: 2024/9/11 23:55
     * @param: [code, loginType, loginParamsDTO, ip]
     * @return: ResponseEntity<SaTokenInfo>
     **/
    ResponseEntity<LoginVO> login(String code, Integer loginType, LoginParamsDTO loginParamsDTO, String ip);

    /**
     * @description: 获取权限列表
     * @author: kkcxy
     * @date: 2024/10/7 21:15
     * @param: [userId]
     * @return: java.util.List<java.lang.String>
     **/
    List<String> getPermissionList(Long userId);

    /**
     * @description: 获取角色列表
     * @author: kkcxy
     * @date: 2024/10/7 21:15
     * @param: [userId]
     * @return: java.util.List<java.lang.String>
     **/
    List<String> getRoleList(Long userId);

    /**
     * @description: 获取路由列表
     * @author: kkcxy
     * @date: 2024/10/8 0:26
     * @param: [userId]
     * @return: java.util.List<cn.kkcxy.blog.core.vo.admin.RouterVO>
     **/
    List<RouterVO> getAdminRouters(Long userId);

    /**
     * @description: 获取管理员信息
     * @author: kkcxy
     * @date: 2024/10/29 1:09
     * @param: [adminId]
     * @return: cn.kkcxy.blog.core.vo.admin.AdministratorInfoVO
     **/
    AdministratorInfoVO getAdministratorInfo(Long adminId);
}
